#ifndef ENTITY_H
#define ENTITY_H

#include <QString>
#include <QStringList>
#include <QObject>
#include <QDebug>

#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QTextCodec>
#include <QTextStream>
// 定义飞火颗粒结构体
typedef struct {
    QString particle_id;                // 飞火颗粒编号
    QString material_name;              // 飞火颗粒材料名称
    QString material_type;              // 飞火颗粒材料种类
    double pre_burn_weight;             // 燃烧前飞火颗粒质量(g)
    QString diameter_length;            // 燃烧前飞火颗粒尺寸(mm)
    QString processing_method;          // 飞火颗粒加工方法
    double post_burn_weight;            // 燃烧后飞火颗粒质量(g)
    QString post_burn_diameter_length;  // 燃烧后飞火颗粒尺寸(mm)
    int particle_count;                 // 飞火颗粒数目(个)
    QString origin;                     // 飞火颗粒来源或产地
    QString image_path;                 // 飞火颗粒图片路径
} FlyFireParticle;

// 定义试样基本信息结构体
typedef struct {
    QString sample_id;               // 试样编号
    QString sample_name;             // 试样名称
    QString sample_type;             // 试样材料类型
    double sample_weight;            // 试样质量(g)
    QString sample_dimensions;       // 试样尺寸(mm)
    int sample_thickness;            // 试样厚度(mm)
    QString sample_water_content;    // 试样含水率（%）
    QString sample_service_life;     // 使用年限(无量纲)
    QString sample_origin;           // 来源或产地(无量纲)
    QString sample_image_path;       // 试样图片
} SampleInfo;

// 定义试验基本信息结构体
typedef struct {
    QString test_id;                 // 试验编号
    QString test_time;               // 试验时间
    QString ignition_method;         // 引燃方式
    QString sample_id;               // 试样编号
    QString particle_id;             // 飞火颗粒编号
    QString sample_name;             // 试样名称
    QString fire_particle;           // 飞火颗粒名称
    int particle_count;              // 飞火颗粒数量
    QString test_wind_speed;         // 试验风速
    QString ignition_duration;           // 点燃时间
    QString hazard_level;            // 危险分级
    QString image_path;              // 试验图片路径
} ExperimentInfo;

// 获取飞火颗粒总表表头
QStringList getFlyFireParticleHeaders();

// 获取试样总表表头
QStringList getSampleInfoHeaders();

// 获取试验及结果总表表头
QStringList getExperimentInfoHeaders();

FlyFireParticle importCSV(const QString &filePath);

SampleInfo importSampleCsv(const QString &filePath);

ExperimentInfo importExperimentCsv(const QString &filePath);

#endif // ENTITY_H


